package com.xx.happychatboot.middleware.rocketmq.service;

import java.util.Objects;

/**
 * SecureInvoke 持有者类，用于管理线程本地变量，标识当前线程是否正在执行 SecureInvoke。
 */
public class SecureInvokeHolder {
    // 线程本地变量，用于标识当前线程是否正在执行 SecureInvoke
    private static final ThreadLocal<Boolean> INVOKE_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 检查当前线程是否正在执行 SecureInvoke
     * @return 如果当前线程正在执行 SecureInvoke，则返回 true；否则返回 false
     */
    public static boolean isInvoking() {
        return Objects.nonNull(INVOKE_THREAD_LOCAL.get());
    }

    /**
     * 设置当前线程正在执行 SecureInvoke
     */
    public static void setInvoking() {
        INVOKE_THREAD_LOCAL.set(Boolean.TRUE);
    }

    /**
     * 移除当前线程的 SecureInvoke 标识
     */
    public static void invoked() {
        INVOKE_THREAD_LOCAL.remove();
    }
}
